var required = require('../plugs/guimain/required')
var mongoFunc = require('../funcs/mongoFunc')
var send = require('../funcs/sendData')
var mongodb = require('../plugs/mongose/mongoQuery')
var shortid = require('shortid')
var captcha = require('trek-captcha')
var result = app => {
	var isEmptyStr = required.isEmptyStr
	var isRange = required.isRange
	var isEmptyObject = required.isEmptyObject
	// addCode
			// bXHPd1xS- Start
		
async function getImgCode(req, res){
        const {
            token,
            buffer
        } = await captcha();
        req.session.imageCode = token;
        res.writeHead(200, {
            'Content-Type': 'image/png'
        });
        res.write(buffer);
        res.end();
    }
app.get('/user/captcha',getImgCode,(req, res) => { // 获取验证码
    
  var params = req.query
    
  var where = {}
    
    
    
    
    
    
    
})
		// bXHPd1xS- end
			
app.post('/user/login',(req, res,next) => { // user-登录 查询用户是否存在
    
  var params = req.body
  var username = params.username // 用户名称
    if (isEmptyStr(username)) {
      send(res, false, '用户名称不能为空')
      return
    }
  var password = params.password // 密码
    if (isEmptyStr(password)) {
      send(res, false, '密码不能为空')
      return
    }
var code = params.code||'gui'// 校验码
//    if (isEmptyStr(code)) {
//      send(res, false, '校验码不能为空')
//      return
//    }
    
  var where = {
      username,
      password,
      code}
    if (code !== 'gui') {
      send(res, false, '验证码不正确')
      return
    }
  mongodb.findOne('user', where,function(err, data) {
    if(err) {
      console.log(err)
      send(res, false)
    } else {
      if (!data) {
          send(res, false, '账号或密码错误')
          return
        }
	req.userId = data._id
	req.userInfo = data
	console.log("查询到的数据")
	console.log(data)
	next()
    }
    return
  }) 
},(req,res,next)=>{ // 更新token
        var token = shortid.generate()
        var where2 = {
              userId:req.userId
            }
	    console.log(where2)
        var updateTime = new Date()
mongodb.update('user', {'username':req.body.username,'password':req.body.password}, {token,updateTime,date:updateTime}, function (err, data2) { // 更新用户token与时间
     if (err) {
            send(res, false, err)
            return
          }     
	  console.log("更新之后的数据为")
	  console.log(data2)
	  // 更新并获取用户信息
  	mongodb.update('userInfo', where2, {token,updateTime}, function (err, data3) { // 更新用户信息表 token
          if (err) {
            send(res, false, err)
            return
          } else {
            data = req.userInfo
            data.token = token
            data.password = ''
            send(res, true, data)
          }
        })
})
})
			// H144fWVXV Start
		
app.get('/user/list',(req, res) => { // user-登录
    
  var params = req.query
  var username = params.username // 用户名称
    if (isEmptyStr(username)) {
      send(res, false, '用户名称不能为空')
      return
    }
    if(!isRange(username,5,30)){
        send(res, false, '用户名称 长度不正确')
        return
    }
  var password = params.password // 密码
    if (isEmptyStr(password)) {
      send(res, false, '密码不能为空')
      return
    }
  var code = params.code // 校验码
    if (isEmptyStr(code)) {
      send(res, false, '校验码不能为空')
      return
    }
    
  var where = {
      username,
      password,
      code}
    
    if (code !== 'gui') {
      send(res, false, '验证码不正确')
      return
    }
    
    
    
  mongodb.find('user', where,function(err, data) {
    if(err) {
      console.log(err)
      send(res, false)
    } else {
      if (!data[0]) {
          send(res, false, '账号或密码错误')
          return
        }
        var token = shortid.generate()
        var where2 = {
              userId:data[0]._id
            }
        var updateTime = new Date()
mongodb.update('user', {'_id':data[0]._id}, {token,updateTime,date:updateTime}, function (err, data2) { // 更新用户token与时间
     if (err) {
            send(res, false, err)
            return
          }     
  	mongodb.update('userInfo', where2, {token,updateTime}, function (err, data3) { // 更新用户信息表 token
          if (err) {
            send(res, false, err)
            return
          } else {
            data = data[0]
            data.token = token
            data.password = ''
            send(res, true, data)
          }
        })
})
        return
      send(res, true, data)
    }
    return
  })
    
    
})
		// H144fWVXV end

			// ryvVMZVX4 Start

app.post('/user/add',(req, res) => { // user-注册

  var params = req.body
  var username = params.username // 用户名
    if (isEmptyStr(username)) {
      send(res, false, '用户名不能为空')
      return
    }
    if(!isRange(username,5,30)){
        send(res, false, '用户名 长度不正确')
        return
    }
  var phone = params.phone // 电话
  var password = params.password // 密码
    if (isEmptyStr(password)) {
      send(res, false, '密码不能为空')
      return
    }
  var code = params.code // 验证码等等
    if (isEmptyStr(code)) {
      send(res, false, '验证码等等不能为空')
      return
    }
  var date = params.date // 最后一次上线时间
    if(!date){
      date = new Date
    }
  var email = params.email // 邮箱

  var where = {
      username,
      phone,
      password,
      code,
      date,
      email}


    where.createTime = new Date()
    where.updateTime = new Date()
    var where2 = {$or:[{username:where.username}]}
            if(phone){
               where2 = {$or:[{username:where.username},{phone:where.phone}]}
            }
    mongoFunc.getId('user',where2, res).then(_data => { // 判断用户用户名与电话号码是否存在
      console.log("查询之后的数据为")
      console.log(_data)
              if (_data) {
                send(res, false,"注册失败，用户或电话号码已存在")
              }else{



  mongodb.save('user', where,function(err, data) {
    if(err) {
      console.log(err)
      send(res, false)
    } else {
      		var userInfoParams = {
                  name: '匿名用户',
                  token:'',
                  access: '',
                  avator: '',
                  userId:data._id
                }
                mongodb.save('userInfo', userInfoParams, function (err, data3) { // 更新用户信息表 token
                  if (err) {
                    send(res, false, err)
                    return
                  } else {
                    // data.password = '' // 密码就不要放回给用户了
                    send(res, true, data3)
                    return
                  }
                })
return
      send(res, true, data)
    }
    return
  })

					}
				})

})
		// ryvVMZVX4 end

}
module.exports = result
